package come.bjpowernode.javase.reflect;

import java.io.FileReader;
import java.util.Properties;

/*
验证反射机制的灵活性。
java代码写一遍，在不改变java源代码的基础上，可以做到不同对象的实例化
非常之灵活。负荷OCP原则：对扩展开放，对修改关闭。

后期你们要学习的是高级框架，而工作过程中都是使用高级框架
包括SSH，ssm
Soring，SpringMVC，MyBatis
Struts Hibernate

这些高级框架底层实现原理，都采用了反射机制，所以反射机制还是重要的。
学会了反射机制，有利于你理解剖析高级框架的源代码。
 */
public class ReflectTest03 {
    public static void main(String[] args) throws Exception {
        //通过IO流读取：classInfo.properties文件
        FileReader reader = new FileReader(
                "chapter25/classInfo.properties");

        //创建属性独享Map
        Properties pro = new Properties();//key,value都是String

        //加载
        pro.load(reader);

        //关闭流
        reader.close();

        //通过key获取value
        String className = pro.getProperty("className");

        //通过反射机制实例化对象
        Class c = Class.forName(className);
        Object obj = c.newInstance();
        System.out.println(obj);


    }
}
